import router from './router'
import store from './store'
const qs = require('qs')
import {login, getUserInfo} from '@/api/user.js'
import {APPID} from '@/utils/base.js'
const baseurl = '//xxx'
// 解析url参数并获取code
function getUrlParam(name) {
  //name为要获取的参数名
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
  var rrr = decodeURIComponent(window.location.search)
  var r = rrr.substr(1).match(reg)
  if (r != null) return unescape(r[2])
  return null
}
// 请求微信服务器获取code 方法
function handleAuthorize() {
  console.log('123123123')
  /**
   * 判断是否是微信环境
   * 是微信环境：进行授权处理
   * 不是微信环境：不进行授权处理
   */

  /**
   * 判断是否有 微信公众号 ID和密钥
   * 该判断根据个人情况，决定是否需要
   * 一般如果需要前端传给后台接口则需要；如果不需要前端传给后台接口则不需要
   */

  /**
   * 这里使用了mint-ui框架，这条代码是loading展示
   * 可根据个人情况设置
   */
  // Indicator.open('微信授权中...')
  /**
   * 检查页面路径带参状况,以此来判断是否授权
   * 授权成功后：重定向路径上会带有相应的参数（code、state）
   * 授权前：页面路径上不会带有code、state参数（个人自定义参数最好不要使用这两个）
   */
  // let pagePath = decodeURIComponent(window.location.href) // 页面路径
  // let urlArray = pagePath.split('?')
  // let WXAuthorize = window.localStorage.getItem('hasAuthorize') || false // 是否已经微信网页授权
  // let redirectQuery = '' // 重定向自定义传参

  // // 判断初始路径（授权前）上是否带参，以便之后写入重定向路径中

  // if (urlArray.length > 1) {
  //   // 带参情况

  //   let query = urlArray[1].split('#')[0].split('&')

  //   query.forEach(item => {
  //     let queryName = item.split('=')[0]
  //     let queryValue = item.split('=')[1]

  //     /**
  //      * 判断是授权后的重定向，还是授权前
  //      * true：已授权；false：未授权
  //      */

  //     if (WXAuthorize) {
  //       if (queryName === 'state' && queryValue !== 'authorize') {
  //         // 获取自定义参数

  //         let customQuery = queryValue.split('|')

  //         customQuery.forEach(queryItem => {
  //           let customName = queryItem.split('=')[0]
  //           let customValue = queryItem.split('=')[1]

  //           /**
  //            * 这里根据自己的实际带参情况进行判断
  //            * 以原始 https://www.baidu.com?a=1&b=2 路径为例
  //            */
  //           this.query[customName] = customValue
  //         })
  //       } else if (queryName === 'code') {
  //         // 获取微信授权后的code
  //         var newcode = queryValue
  //         console.log(newcode, '???????????????')
  //       }
  //     } else {
  //       this.query[queryName] = queryValue
  //     }
  //   })
  // }

  // // 判断是否已经微信授权
  // if (WXAuthorize) {
  //   console.log(WXAuthorize, '授权了吗啊')
  //   /**
  //    * 在授权成功后，将缓存中的授权成功记录清除
  //    * hasAuthorize：
  //    *              authorize：已授权
  //    *              没有该字段：未授权
  //    */
  //   window.localStorage.removeItem('hasAuthorize')
  //   /**
  //    * 通过code换取openid等信息
  //    * 授权成功，获取code值后的逻辑，根据自己的实际情况编写
  //    */
  //   return false
  // } else {
  //   /**
  //    * 缓存记录页面初始（即授权前）路径
  //    * 主要用于解决在页面手动刷新时，微信授权问题
  //    */
  //   !window.localStorage.getItem('`WXAuthorizeUrl`') &&
  //     window.localStorage.setItem('WXAuthorizeUrl', window.location.href)
  //   // 缓存记录已授权
  //   window.localStorage.setItem('hasAuthorize', 'authorize')
  //   // 处理重定向带参
  // }

  // // 微信授权路径
  !window.localStorage.getItem('WXAuthorizeUrl') && window.localStorage.setItem('WXAuthorizeUrl', window.location.href)
  let WXAuthorizeUrl = window.localStorage.getItem('WXAuthorizeUrl')
  // let WXAuthorizeUrl = window.localStorage.setItem('WXAuthorizeUrl', window.location.href)
  // // 微信公众号 ID
  let appid = APPID
  // // 授权后重定向的回调链接地址，请使用 urlEncode 对链接进行处理
  let redirectUri = encodeURIComponent(WXAuthorizeUrl)
  // 返回类型，请填写code
  let responseType = 'code'
  /**
   * 应用授权作用域 snsapi_base、snsapi_userinfo
   * snsapi_base：不弹出授权页面，直接跳转，只能获取用户openid（静默授权）
   * snsapi_userinfo：弹出授权页面，可通过openid拿到昵称、性别、所在地。并且， 即使在未关注的情况下，只要用户授权，也能获取其信息
   */
  let scope = 'snsapi_userinfo'
  // 重定向后会带上state参数，开发者可以填写a-zA-Z0-9的参数值，最多128字节
  let state = 'authorize'
  // 授权路径
  let authorizeUrl =
    'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
    appid +
    '&redirect_uri=' +
    redirectUri +
    '&response_type=' +
    responseType +
    '&scope=' +
    scope +
    '&connect_redirect=1#wechat_redirect'
  // 进行授权操作，获取code信息(code作为换取access_token的票据，每次用户授权带上的code将不一样，code只能使用一次，5分钟未被使用自动过期)
  // '&state=' +
  // state +
  console.log(authorizeUrl, 'authorizeUrl')
  window.location.href = authorizeUrl
}
function funcUrlDel(names) {
  if (typeof names == 'string') {
    names = [names]
  }
  var loca = window.location
  var obj = {}
  var arr = loca.search.substr(1).split('&')
  //获取参数转换为object
  for (var i = 0; i < arr.length; i++) {
    arr[i] = arr[i].split('=')
    obj[arr[i][0]] = arr[i][1]
  }
  //删除指定参数
  for (var i = 0; i < names.length; i++) {
    delete obj[names[i]]
  }
  //重新拼接url
  var url =
    loca.origin +
    loca.pathname +
    '?' +
    JSON.stringify(obj)
      .replace(/[\"\{\}]/g, '')
      .replace(/\:/g, '=')
      .replace(/\,/g, '&')
  return url
}
// 路由变化时
router.beforeEach(async (to, from, next) => {
  //读取sessionStorage的user
  // localStorage.removeItem('user')
  let user = JSON.parse(localStorage.getItem('user'))
  console.log(user, '?????????')

  //这里可以在开发生产环境下 加测试用户信息存储到sessionStorage
  //本地环境

  // 已登录
  if (user) {
    let myPhone = user.telPhone
    console.log(myPhone, '用户信息又id和电话吗', user)
    if (!myPhone) {
      if (to.path == '/') {
        next({
          name: 'phone'
        })
      }
    } else {
      next() //释放路由 如果已经登录
      console.log(getUrlParam('code'))
      if (!getUrlParam('code')) {
      } else {
        let str = window.location.href.split('#')[0]
        let index = str.lastIndexOf('?')
        str = str.substring(0, index)
        window.location.href = str
      }
    }
  }
  // 未登录 且不是在测试环境下
  if (!user) {
    const code = getUrlParam('code') //获取url 上面的code

    console.log(code, 'code')
    // 还未完成微信授权
    if (!code) {
      console.log(code, '去拿code')
      //假如没code
      handleAuthorize() //请求微信服务器获取code
    }
    // 已完成微信授权 假如已经获取到了code
    if (code) {
      console.log(code, '拿到code')

      let newUser = await login({code: code, appid: APPID})
      console.log(newUser, 'denglu ', newUser.data.wxUser)
      localStorage.setItem('mytoken', newUser.data.token)
      localStorage.setItem('user', JSON.stringify(newUser.data.wxUser))
      console.log(localStorage.getItem('user'), '获user')
      if (!newUser.data.wxUser.telPhone) {
        console.log(user, '又用户吗?')

        next({
          name: 'phone' // 未登录则跳转至login页面
        })
      } else {
        next()
        if (!getUrlParam('code')) {
        } else {
          let str = window.location.href.split('#')[0]
          let index = str.lastIndexOf('?')
          str = str.substring(0, index)
          window.location.href = str
          // location.reload()
        }
      }
    }
  } else {
    next()
    if (!getUrlParam('code')) {
    } else {
      let str = window.location.href.split('#')[0]
      let index = str.lastIndexOf('?')
      str = str.substring(0, index)
      window.location.href = str
    }
  }
})
